/* * Created on Nov 2, 2011 * (c) 2011 Trumpet, Inc. * */ package com.itextpdf.text.pdf; import com.itextpdf.text.pdf.parser.*; import junit.framework.Assert; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import com.itextpdf.testutils.TestResourceUtils; import java.io.IOException; import java.util.ArrayList; /** * @author Kevin */ public class CMapAwareDocumentFontTest { @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void testWidths() throws Exception{ final PdfReader pdfReader = TestResourceUtils.getResourceAsPdfReader(this, "fontwithwidthissue.pdf"); try { PdfDictionary fontsDic = pdfReader.getPageN(1).getAsDict(PdfName.RESOURCES).getAsDict(PdfName.FONT); PRIndirectReference fontDicIndirect = (PRIndirectReference)fontsDic.get(new PdfName("F1")); CMapAwareDocumentFont f = new CMapAwareDocumentFont(fontDicIndirect); Assert.assertTrue("Width should not be 0", f.getWidth('h') != 0); } finally { pdfReader.close(); } } @Test public void weirdHyphensTest() throws IOException { PdfReader reader = TestResourceUtils.getResourceAsPdfReader(this, "WeirdHyphens.pdf"); ArrayList<String> textChunks = new ArrayList<String>(); RenderListener listener = new MyTextRenderListener(textChunks); PdfContentStreamProcessor processor = new PdfContentStreamProcessor(listener); PdfDictionary pageDic = reader.getPageN(1); PdfDictionary resourcesDic = pageDic.getAsDict(PdfName.RESOURCES); processor.processContent(ContentByteUtils .getContentBytesForPage(reader, 1), resourcesDic); /** * This assertion makes sure that encoding has been read properly from FontDescriptor. * If not the vallue will be "\u0000 14". */ Assert.assertEquals("\u0096 14", textChunks.get(18)); reader.close(); } static class MyTextRenderListener implements RenderListener { ArrayList<String> textChunks; MyTextRenderListener(ArrayList<String> textChunks) { this.textChunks = textChunks; } public void beginTextBlock() { } public void endTextBlock() { } public void renderImage(ImageRenderInfo renderInfo) { } public void renderText(TextRenderInfo renderInfo) { textChunks.add(renderInfo.getText()); } } }